#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <stdlib.h>

int main()
{
	//可以看出，1、2、3、4、5....这样拼下去，卡片 1 是最先消耗完的
	//那么就可以观察在拼某个数的时候会缺卡片 1，这个数的前一个数就是能拼出的最大数
	int card_1, num;
	card_1 = 0;
	for (num = 1; card_1 <= 2021; num++)
	{
		//要拼的数num是从1开始，慢慢往后
		if (num % 10 == 1)//个位
			card_1++;
		if (num / 10 % 10 == 1)//十位
			card_1++;
		if (num / 100 % 10 == 1)//百位
			card_1++;
		if (num / 1000 % 10 == 1)//千位
			card_1++;
		if (card_1 > 2021)//当拼某个数的时候会缺卡片 1
			num -= 1;
	}
	num -= 1;
	//因为在检索到拼不出数的那一次后退出循环，然后 num++ “先用后增”导致增 1，所以在 for 循环外用减 1 来抵消
	printf("%d\n", num);

	system("pause");

	return 0;
}